home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
041-050
/
amok41
/
spiele
/
mastermind
/
txt
/
hilfen.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
11KB
|
359 lines
(*********************************************************
*
* :Program. Abfrage , gibt BOOLEAN zurück
* :Author. Hans Schafft
* :Address. Landfriedstraße 1A - Hinterhaus
* :Address. 6900 Heidelberg
* :Phone. 06221 - 22416
* :Version. 1.0
* :Date. 1990
* :Copyright. PD
* :Language. Modula-II
* :Translator. M2Amiga
*
*********************************************************************)
IMPLEMENTATION MODULE Hilfen;
FROM SYSTEM IMPORT ADR, ADDRESS, LONGSET;
FROM Str IMPORT Copy,Length;
FROM Exec IMPORT MemReqs, MemReqSet, WaitPort, ReplyMsg, GetMsg;
FROM Graphics IMPORT jam2;
FROM Intuition IMPORT GadgetPtr, WindowPtr,IntuiText,IntuiTextLength,
IntuiMessagePtr, IDCMPFlags, IDCMPFlagSet,
boolGadget, reqGadget, ActivationFlags,Request,
ActivationFlagSet, Border, Gadget, GadgetFlagSet,
Requester, RequesterFlagSet, InitRequester;
CONST
postext = "Wie schrecklich aufregend !";
negtext = "Außerordentlich interessant !";
XPosition = 10;
YPosition = 30;
Zeile1 = "Durch Klicken auf die Pfeile kann man die Zahl der Kästchen";
Zeile2 = "als auch die der Farben erhöhen oder vermindern.";
Zeile3 = " ";
Zeile4 = "Hat man seine WunschKonstellation erstellt, Klick auf 'SPIEL'.";
Zeile5 = " ";
Zeile6 = "Jetzt erscheint, wenn AnzahlDerFarben >= AnzahlDerKästchen,";
Zeile7 = "ein weiterer Requester, der fragt ob jede Farbe nur einmal";
Zeile8 = "oder mehrmals vorkommen darf. Hat man dies beantwortet, so";
Zeile9 = "beginnt das Spiel:";
Zeile10 = "Die noch unausgefüllten Kästchen erscheinen links oben.";
Zeile11 = "Man wähle jetzt eine der Farben durch anklicken aus, - der Maus-";
Zeile12 = "Zeiger erhält die aktuelle Farbe - und setzte sie durch An-";
Zeile13 = "klicken in das gewünschte Kästchen. Hat man so alle Kistchen";
Zeile14 = "gefüllt, bitte das 'OK' Gadget betätigen.";
Zeile15 = " ";
Zeile16 = "Nun rückt alles eine Reihe nach unten und zwei Zahlen erscheinen.";
Zeile17 = "Die erste heißt: Soviele Kästchen hast Du mit der richtigen Farbe";
Zeile18 = "gefüllt. Die zweite: Soviele Farben sind sonst noch richtig,";
Zeile19 = "allerdings leider nicht im richtigen Kästchen! Das Spiel ist";
Zeile20 = "beendet, wenn die erste Zahl gleich der Anzahl der Kisten ist.";
Zeile21 = " ";
Zeile22 = "Um den Beginn zu vereinfachen kann man auch direkt OK klicken.";
Zeile23 = "Das hat beim MehrfachModus die Folge, daß in alle Kistchen die";
Zeile24 = "erste Farbe gesetzt wird, sonst werden die Farben der Reihe nach";
Zeile25 = "in die Kistchen gesetzt.";
Zeile26 = " ";
Zeile27 = "Kästchen,die nicht verändert werden sollen, brauchen nicht neu";
Zeile28 = "gefüllt zu werden. Ihre Farbe wird beim nächsten OK von der darunter";
Zeile29 = "liegenden Reihe übernommen.";
Zeile30 = " ";
Zeile31 = "VORSICHT! Klickt man während des Spiels 'NEU', wird alles gelöscht!";
Zeile32 = " ";
Zeile33 = "Klickt man während des Spieles das 'Hilfe'-Gadget an, verfärbt";
Zeile34 = "sich der Bildschirm blau. Jeder Klick auf eines der Kästchen";
Zeile35 = "offenbart nun seine Farbe. Aus dem Hilfe - Modus kommt man nur";
Zeile36 = "durch erneutes Anklicken von 'HILFE' !!";
Zeile37 = " ";
Zeile38 = "Die DruckerAusgabe kann durch erneutes Anwählen wieder ausge-";
Zeile39 = "schaltet werden.";
Zeile40 = " ";
Zeile41 = "Um die PfeilImages einzubinden habe ich IFFToCode von AMOK #3";
Zeile42 = "benutzt. Dem Autor Pit Burkhardt auf diesem Wege vielen Dank !";
Zeile43 = "§";
ReqTextFarbeVorne = 13;
ReqTextFarbeHinten = 14;
ReqBackFill = 14;
ReqRandFarbe = 4;
posGadTextFarbeVorne = 1;
posGadTextFarbeHinten = 0;
posGadRandFarbe = 3;
negGadTextFarbeVorne = 1;
negGadTextFarbeHinten = 0;
negGadRandFarbe = 3;
VAR
RequBreite : INTEGER;
RequHoehe : INTEGER;
posGadBreite : INTEGER;
negGadBreite : INTEGER;
requester : Requester;
posGadText : IntuiText;
posGad : Gadget;
posGadBorder : Border;
posGadEcken : ARRAY [1..10] OF INTEGER;
negGadText : IntuiText;
negGad : Gadget;
negGadBorder : Border;
negGadEcken : ARRAY [1..10] OF INTEGER;
ReqBorder : Border;
ReqEcken : ARRAY [1..10] OF INTEGER;
text : ARRAY [0..43],[0..75] OF CHAR;
itext : ARRAY [0..43] OF IntuiText;
(******************************************************************)
PROCEDURE ZeigeHilfen(wiPtr : WindowPtr) : BOOLEAN;
VAR
gadPtr : GadgetPtr;
gadNr : INTEGER;
msgPtr : IntuiMessagePtr;
class : IDCMPFlagSet;
code : CARDINAL;
ende,mode : BOOLEAN;
BEGIN
IF Request(ADR(requester),wiPtr) THEN
ende := FALSE;mode := TRUE;
REPEAT
WaitPort(wiPtr^.userPort);
LOOP
msgPtr := GetMsg(wiPtr^.userPort);
IF msgPtr=NIL THEN EXIT END;
class := msgPtr^.class;
code := msgPtr^.code;
gadPtr:= msgPtr^.iAddress;
gadNr := gadPtr^.gadgetID;
ReplyMsg(msgPtr);
IF (class = IDCMPFlagSet{gadgetUp}) THEN
CASE gadNr OF
| 1 : mode := TRUE; ende := TRUE;
| 2 : mode := FALSE; ende := TRUE;
ELSE
END;
END;
IF ende THEN EXIT END;
END; (* LOOP *)
UNTIL ende;
END;
RETURN mode;
END ZeigeHilfen;
(******************************************************************)
PROCEDURE RichteEinGadgetJa;
BEGIN
WITH posGadText DO
leftEdge := 1; topEdge := 1;
frontPen := posGadTextFarbeVorne; backPen := posGadTextFarbeHinten;
drawMode := jam2; iText := ADR(postext);
iTextFont:= NIL; nextText:= NIL;
END;
posGadBreite := IntuiTextLength(ADR(posGadText));
(* Koordinaten für den Rand der Gadget Box *)
posGadEcken[1] := 0; posGadEcken[2] := 0;
posGadEcken[3] := posGadBreite+2; posGadEcken[4] := 0;
posGadEcken[5] := posGadBreite+2; posGadEcken[6] := 11;
posGadEcken[7] := 0; posGadEcken[8] := 11;
posGadEcken[9] := 0; posGadEcken[10]:= 0;
WITH posGadBorder DO
leftEdge := -1; topEdge := -1;
frontPen := posGadRandFarbe; backPen := ReqBackFill;
drawMode := jam2; count := 5;
xy := ADR(posGadEcken); nextBorder := NIL;
END;
WITH posGad DO
leftEdge := 10;
topEdge := RequHoehe - 15;
width := posGadBreite;
height := 10;
flags := GadgetFlagSet{};
activation := ActivationFlagSet{endGadget, relVerify};
gadgetType := boolGadget + reqGadget;
gadgetRender := ADR(posGadBorder);
gadgetText := ADR(posGadText);
mutualExclude:= LONGSET{};
nextGadget := ADR(negGad);
selectRender := NIL;
specialInfo := NIL;
userData := NIL;
gadgetID := 1;
END;
END RichteEinGadgetJa;
(******************************************************************)
PROCEDURE RichteEinGadgetNein;
BEGIN
WITH negGadText DO
leftEdge := 1; topEdge := 1;
frontPen := negGadTextFarbeVorne; backPen := negGadTextFarbeHinten;
drawMode := jam2; iText := ADR(negtext);
iTextFont := NIL; nextText := NIL;
END;
negGadBreite := IntuiTextLength(ADR(negGadText));
(* Koordinaten für den Rand der Gadget Box *)
negGadEcken[1] := 0; negGadEcken[2] := 0;
negGadEcken[3] := negGadBreite+2; negGadEcken[4] := 0;
negGadEcken[5] := negGadBreite+2; negGadEcken[6] := 11;
negGadEcken[7] := 0; negGadEcken[8] := 11;
negGadEcken[9] := 0; negGadEcken[10] := 0;
WITH negGadBorder DO
leftEdge := -1; topEdge := -1;
frontPen := negGadRandFarbe; backPen := ReqBackFill;
drawMode := jam2; count := 5;
xy := ADR(negGadEcken); nextBorder := NIL;
END;
WITH negGad DO
leftEdge := RequBreite - (negGadBreite + 14);
topEdge := RequHoehe - 15;
width := negGadBreite;
height := 10;
flags := GadgetFlagSet{};
activation := ActivationFlagSet{endGadget, relVerify};
gadgetType := boolGadget + reqGadget;
gadgetRender := ADR(negGadBorder);
gadgetText := ADR(negGadText);
mutualExclude:= LONGSET{};
nextGadget := NIL;
selectRender := NIL;
specialInfo := NIL;
userData := NIL;
gadgetID := 2;
END;
END RichteEinGadgetNein;
(******************************************************************)
PROCEDURE RichteEinRequesterText;
VAR x,y :CARDINAL;
BEGIN
Copy(text[43],"§");
RequBreite := 0;
x := 0;
REPEAT
WITH itext[x] DO
drawMode := jam2; iText := ADR(text[x]);
iTextFont := NIL; nextText := ADR(itext[x+1]);
topEdge := x*10;
frontPen := ReqTextFarbeVorne;
backPen := ReqTextFarbeHinten;
END;
IF RequBreite < IntuiTextLength(ADR(itext[x])) THEN
RequBreite := IntuiTextLength(ADR(itext[x]));
END;
INC(x);
UNTIL text[x,0] = "§";
RequHoehe := x*10 + 23;
RequBreite := RequBreite + 40;
itext[x-1].nextText := NIL;
FOR y := 0 TO x-1 DO
itext[y].leftEdge := (RequBreite - IntuiTextLength(ADR(itext[y]))) DIV 2;
END;
END RichteEinRequesterText;
(******************************************************************)
PROCEDURE RichteEinRequester;
BEGIN
RichteEinRequesterText;
RichteEinGadgetJa;
RichteEinGadgetNein;
ReqEcken[1] := 0; ReqEcken[2] := 0;
ReqEcken[3] := RequBreite-3; ReqEcken[4] := 0;
ReqEcken[5] := RequBreite-3; ReqEcken[6] := RequHoehe-3;
ReqEcken[7] := 0; ReqEcken[8] := RequHoehe-3;
ReqEcken[9] := 0; ReqEcken[10] := 0;
WITH ReqBorder DO
leftEdge := 1; topEdge := 1;
frontPen := ReqRandFarbe; backPen := ReqBackFill;
drawMode := jam2; count := 5;
xy := ADR(ReqEcken); nextBorder := NIL;
END;
InitRequester(ADR(requester));
WITH requester DO
leftEdge := XPosition;
topEdge := YPosition;
width := RequBreite;
height := RequHoehe;
reqGadget := ADR(posGad);
reqText := ADR(itext[0]);
reqBorder := ADR(ReqBorder);
backFill := ReqBackFill;
END;
END RichteEinRequester;
(******************************************************************)
(******************************************************************)
BEGIN
Copy(text[1],Zeile1);
Copy(text[2],Zeile2);
Copy(text[3],Zeile3);
Copy(text[4],Zeile4);
Copy(text[5],Zeile5);
Copy(text[6],Zeile6);
Copy(text[7],Zeile7);
Copy(text[8],Zeile8);
Copy(text[9],Zeile9);
Copy(text[10],Zeile10);
Copy(text[11],Zeile11);
Copy(text[12],Zeile12);
Copy(text[13],Zeile13);
Copy(text[14],Zeile14);
Copy(text[15],Zeile15);
Copy(text[16],Zeile16);
Copy(text[17],Zeile17);
Copy(text[18],Zeile18);
Copy(text[19],Zeile19);
Copy(text[20],Zeile20);
Copy(text[21],Zeile21);
Copy(text[22],Zeile22);
Copy(text[23],Zeile23);
Copy(text[24],Zeile24);
Copy(text[25],Zeile25);
Copy(text[26],Zeile26);
Copy(text[27],Zeile27);
Copy(text[28],Zeile28);
Copy(text[29],Zeile29);
Copy(text[30],Zeile30);
Copy(text[31],Zeile31);
Copy(text[32],Zeile32);
Copy(text[33],Zeile33);
Copy(text[34],Zeile34);
Copy(text[35],Zeile35);
Copy(text[36],Zeile36);
Copy(text[37],Zeile37);
Copy(text[38],Zeile38);
Copy(text[39],Zeile39);
Copy(text[40],Zeile40);
Copy(text[41],Zeile41);
Copy(text[42],Zeile42);
Copy(text[43],"§");
RichteEinRequester;
END Hilfen.